#!/usr/bin/env python3
"""
手动UI测试指南生成器
生成浏览器控制台测试脚本，用于验证前端UI功能
"""

import requests
import json

def generate_ui_test_guide():
    """生成前端UI测试指南"""
    
    print("""
🧪 HR系统前端UI功能手动测试指南
==========================================

请按以下步骤进行测试:

1️⃣ 打开浏览器并访问: http://localhost:8089/living_workspace.html

2️⃣ 打开浏览器开发者工具 (F12)，切换到 Console 标签

3️⃣ 执行以下测试用例:

==== 测试1: 筛选Python工程师 ====
在聊天输入框中输入: "筛选会Python的工程师，显示前3个"
点击发送按钮

期望结果:
✅ 侧边栏显示3个Python工程师候选人卡片
✅ 控制台输出: "🎨 处理UI指令: [...]"
✅ 控制台输出: "📋 更新候选人列表: [...]"

==== 测试2: 生成面试题 ====
在聊天输入框中输入: "给候选人10751444出一道面试题"
点击发送按钮

期望结果:
✅ 弹出面试题模态框
✅ 显示候选人姓名和面试题列表
✅ 控制台输出: "❓ 显示面试题: {...}"

==== 控制台验证脚本 ====
可以在控制台中运行以下JavaScript代码进行验证:

// 检查UI指令处理函数是否存在
console.log('UI指令处理函数:', typeof window.livingWorkspace?.processUICommands);

// 检查候选人列表更新函数是否存在
console.log('候选人列表更新函数:', typeof window.livingWorkspace?.updateCandidateList);

// 检查面试题显示函数是否存在  
console.log('面试题显示函数:', typeof window.livingWorkspace?.showInterviewQuestions);

// 模拟UI指令处理测试
if (window.livingWorkspace) {
    const testUICommands = [{
        command: 'UPDATE_CANDIDATE_LIST',
        payload: [{
            id: 'test123',
            name: '测试候选人', 
            skills: ['Python', 'JavaScript'],
            match_score: 95
        }]
    }];
    
    console.log('🧪 模拟UI指令测试...');
    window.livingWorkspace.processUICommands(testUICommands);
}

==== 验证点 ====
1. 查看Network标签，确认API请求返回了ui_commands字段
2. 查看Console输出，确认UI指令被正确处理
3. 查看界面变化，确认候选人卡片被正确显示
4. 测试面试题弹窗是否正常显示和关闭

==========================================
    """)

def test_api_response():
    """测试API响应结构"""
    print("\n🔧 测试API响应结构:")
    
    try:
        # 测试筛选请求
        print("发送筛选请求...")
        response = requests.post(
            "http://localhost:8089/api/chat",
            json={"message": "筛选会Python的工程师，显示前2个"},
            timeout=15
        )
        
        if response.status_code == 200:
            data = response.json()
            
            ui_commands = data.get('ui_commands', [])
            analyzed_candidates = data.get('analyzed_candidates', [])
            message = data.get('message', '')
            
            print(f"✅ HTTP状态: {response.status_code}")
            print(f"✅ UI指令数量: {len(ui_commands)}")
            print(f"✅ 候选人数量: {len(analyzed_candidates)}")
            print(f"✅ 响应消息长度: {len(message)} 字符")
            
            if ui_commands:
                first_command = ui_commands[0]
                print(f"✅ 第一个UI指令类型: {first_command.get('command', 'None')}")
                print(f"✅ UI指令payload大小: {len(first_command.get('payload', []))}")
            
            print("\n完整响应结构:")
            print(json.dumps({
                "success": data.get('success'),
                "ui_commands_count": len(ui_commands),
                "analyzed_candidates_count": len(analyzed_candidates),
                "has_message": bool(message),
                "first_ui_command": ui_commands[0].get('command') if ui_commands else None
            }, indent=2, ensure_ascii=False))
            
        else:
            print(f"❌ HTTP错误: {response.status_code}")
            print(f"❌ 响应内容: {response.text}")
            
    except Exception as e:
        print(f"❌ API测试失败: {e}")

if __name__ == "__main__":
    generate_ui_test_guide()
    test_api_response()





